package io.github.hayeka.a1_threadlocalandmultidatasource.code.holder;

//==================================
//      @Author hayeka
//      @Email hayeka@2980.com
//      @Date 2021/6/16
//==================================

import io.github.hayeka.a1_threadlocalandmultidatasource.code.domain.Tenant;

import java.util.HashMap;
import java.util.Map;


public abstract class TenantHolder {

    private TenantHolder() {
    }

    private static Map<String, Tenant> codeTenantMap = new HashMap<>();

    private static ThreadLocal<Tenant> tenant = new ThreadLocal<>();

    public static void initTenant(Tenant tenant) {
        codeTenantMap.put(tenant.getTenantCode(), tenant);
    }


    public static void setTenant(String tenantCode) {
        tenant.set(codeTenantMap.get(tenantCode));
    }

    public static Tenant getTenant() {
        return tenant.get();
    }

    public static void removeTenant() {
        tenant.remove();
    }

}
